package com.saver.core.persistence;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

import com.saver.core.domain.Moneda;
import com.saver.core.util.Constantes;

public class MonedaSQLite extends DatabaseHelper {
	
	private static final String TAG = "MonedaSQLite";// eliminar
	private static final String TABLA = "MONEDAS";
	private static final String COL_ID_MONEDA= "ID_MONEDA";
	private static final String COL_NOMBRE = "NOMBRE";
	private static final String[] COLUMNAS = new String []{COL_ID_MONEDA, COL_NOMBRE};

	public MonedaSQLite (Context context) {
		super(context, Constantes.DATABASE_NAME, null, Constantes.DATABASE_VERSION);
	}
	
	public void guardar (Moneda moneda) {
		SQLiteDatabase db = getWritableDatabase();
		
		ContentValues values = new ContentValues();
		values.put(COL_ID_MONEDA, moneda.getId());
		values.put(COL_NOMBRE, moneda.getNombre());
		
		db.insert(TABLA, null, values);
		db.close();
		Log.d(TAG, "moneda guardada");
	}
	
	public void actualizar (Moneda moneda) {
		Log.d(TAG, "actualizar moneda");
		
		SQLiteDatabase db = getWritableDatabase();
		
		ContentValues values = new ContentValues();
		values.put(COL_NOMBRE, moneda.getNombre());
		db.update(TABLA, values, COL_ID_MONEDA+ "=?", 
				new String[]{moneda.getId().toString()});
		
		db.close();
		Log.d(TAG, "moneda actuaizada");
	}
	
	public Moneda buscarPorId (Integer id) {
		Log.i(TAG, "buscarPorId: " + id);
		
		Moneda moneda = null;
		if (id != null) {
			SQLiteDatabase db = getReadableDatabase();
			Cursor cursor = db.query(TABLA, COLUMNAS, COL_ID_MONEDA + "=?", 
					new String[]{id.toString()}, null, null, null);
			
			if (cursor.moveToNext()) {
				moneda = crearMoneda(cursor);
			}
			
			db.close();
		}
		return moneda;
	}

	private Moneda crearMoneda(Cursor cursor) {
		Moneda moneda = new Moneda();
		moneda.setId(cursor.getInt(0));
		moneda.setNombre(cursor.getString(1));
		return moneda;
	}

}
